var tmp = 123;
if(true){
    console.log(tmp);
    let tmp;
}

//报错，let定义的变量不能再定义前调用
// 两个知识点  es6新增块级作用域，使用let命令定义的变量只在当前作用域内生效
// if的{} 在let的作用下  tmp会在内部重新定义一个变量，这个变量仅在if的{}中生效，不会影响外部的tmp
// 而let定义的变量如果先于定义就调用，则会抛出一个异常